草庐IT

c++ tcp多线程

全部标签

c++ - 创建可暂停/可恢复线程的最佳方法是什么

我正在为一个发送低缓冲区通知的微处理器做一些网络编程,我有一个线程可以写入一定数量的信息。完成后,它需要进入暂停状态并等待低缓冲区通知恢复。使用windows的线程池api还是使用通过CreateThread()创建的线程更好? 最佳答案 当您的线程需要等待时,它应该开始等待一个事件。这会自动挂起线程。Windows为此提供了WaitForMultipleObjects和WaitForSingleObject函数。Linux使用条件变量或信号量。 关于c++-创建可暂停/可恢复线程的最佳

ruby - 如何在处理文件时在 ruby​​ 中同时运行多个线程?

今天我一直在研究Ruby和线程。我有一个要检查的代理列表。假设10秒的超时通过一个非常大的代理列表将花费很多小时,如果我写这样的东西:proxies.eachdo|proxy|check_proxy(proxy)end我试图找出线程的第一个问题是如何同时启动多个线程。我在网上找到了一小段简洁的代码:forpageinpagesthreads就同时启动它们而言,似乎工作得很好。所以现在我可以...开始同时检查所有7000条记录?我如何转到一个文件,为每个线程取出一行,运行一批大约20个并重复该过程?我能否运行一个while循环同时启动20个线程(从文件中删除行)并一直运行直到文件为空?我

c++ - 如何多次顺序调用3个线程?

如何多次顺序调用3个线程?例如:在迭代1中,执行顺序应为“Thread0->thread1->thread2”,然后在迭代2中执行顺序应相同,即“Thread0->thread1->thread2”,依此类推。示例代码只执行一次3个线程。它不会进行第二次迭代。Thread0=CreateThread(NULL,0,ThreadProc0,NULL,CREATE_SUSPENDED,&ThreadID);Thread1=CreateThread(NULL,0,ThreadProc1,NULL,CREATE_SUSPENDED,&ThreadID);Thread2=CreateThread

windows - 当前线程的 SetWindowsHookEx 返回 null

我在尝试为当前线程获取键盘钩子(Hook)时遇到问题。首先,我需要为所有线程获取键盘输入,所以我使用了:hHook=SetWindowsHookEx(WH_KEYBOARD_LL,mKeyboardProc,GetModuleHandle(NULL),0);这工作正常,但是当我尝试将dwThreadId参数(最后一个)设置为GetCurrentThreadId()时,SetWindowsHookEx返回NULL。可能是什么问题?谢谢。 最佳答案 WH_KEYBOARD_LL是一个全局钩子(Hook),如documentation中所

c++ - n>0 的 Sleep(n) 是否将 CPU 时间放弃给其他线程

在windows下使用VC++13,联机帮助指出使用Sleep(0)会将当前线程时间片的剩余部分放弃给具有同等优先级的任何其他线程。其他值也是如此吗?例如如果我使用Sleep(1000),则当前线程运行的内核有1000毫秒的CPU时间可能会被另一个线程使用?我想这是特定于硬件和实现的,因此为了缩小范围,假设是IntelI5或更好的Windows7或8。问的原因是我有一个线程池类,我正在使用一个额外的监视器线程来报告进度,允许用户中止长进程等... 最佳答案 是的,零只有在表示没有最短等待时间的情况下才具有特殊含义。通常它可以被解释为

c - Windows线程接受套接字上的连接

我熟悉pthreads,但不熟悉Windows线程。在Linux中,一个新线程可以这样启动:pthread_ttid;intrc=pthread_create(&tid,NULL,Threadfn,&newsocket);assert(rc==0);////和Threadfn可以轻松重构Socket:void*Threadfn(void*vargp){pthread_detach(pthread_self());int*Socket=(int*)vargp;print("Socketis%d\n",*Socket);//recv/read/sendetc..pthread_exit(N

c# - 在 Windows 窗体中,如何在用户单击滚动条时阻止 UI 线程阻塞?

除了面板的滚动条等,没有其他控件可以做到这一点。单击并按住按钮、标签、链接、选项卡,任何其他控件都没有此效果。但是只要用户单击滚动条,或者单击并拖动滚动条,UI线程上的所有其他处理就会停止。这对我的应用程序(一个游戏,需要在这种情况下继续运行)来说是个大问题,但我想不出一种方法来通过重载、添加Application.DoEvents调用或任何方式来处理这个问题像那样。有什么想法吗? 最佳答案 在我看来,您应该尝试将您的游戏逻辑移到另一个线程中(而不是让您的游戏逻辑在主UI线程中运行)。我认为没有任何方法可以禁用滚动条的行为。除非您创

c++ - 在 Win32/MFC 和 POSIX 中,线程会自行清理吗?

我正在使用C++和Boost开发一个多线程程序。我正在使用辅助线程来异步初始化资源。如果我分离线程并且对线程的所有引用都超出范围,我是否泄漏了任何资源?还是线程会自行清理(即它的堆栈和自身所需的任何其他系统资源)?根据我在文档中看到的内容(以及我8年前从pthreads中记忆的内容),不需要进行明确的“销毁线程”调用。我希望线程异步执行,当需要使用资源时,我会检查是否发生错误。粗略的代码看起来像这样://Assumethiswon'tgetcalledfrequentlyenoughthatnext_resourcewon'tgetpromoted//beforethethreadfi

Windows 和 Linux 线程优先级等价

Windows操作系统将以下常量定义为线程优先级:THREAD_PRIORITY_IDLE(-15)THREAD_PRIORITY_LOWEST(-2)THREAD_PRIORITY_BELOW_NORMAL(-1)THREAD_PRIORITY_NORMAL(0)THREAD_PRIORITY_ABOVE_NORMAL(1)THREAD_PRIORITY_HIGHEST(2)THREAD_PRIORITY_TIME_CRITICAL(15)Linux有sched_get_priority_max()和sched_get_priority_min()来获取线程优先级范围。Windows

c++ - 是否可以使用 c/c++ 创建一个即使主线程在 Windows 中退出也不会退出的线程?

如上图所示,一旦主线程死亡,所有其他线程将自动退出。是否可以创建一个永不死亡的线程? 最佳答案 你可以,但你可能不应该;它只会让人们感到困惑。Hereisagoodexplanation这是如何与Win32和CRT一起工作的。 关于c++-是否可以使用c/c++创建一个即使主线程在Windows中退出也不会退出的线程?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/3695400